home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #15
/
Monster Media Number 15 (Monster Media)(July 1996).ISO
/
sound
/
mdlpbk23.zip
/
MIDLPBK.TXT
< prev
next >
Wrap
Text File
|
1996-04-18
|
21KB
|
532 lines
Hubi's LoopBack device Version 2.3 April 19, 1996
virtual MIDI driver for Windows3x/95 to connect multiple MIDI-programs.
_____________________________________________________________________________
This package may be of use for You, if you
* work simultaneous with multiple MIDI programs in Windows (or want to do it).
* hate the Message "the MIDI device is currently in use by another ...".
* simply want to hear the OPL2-FM chips of your SoundBlaster when you play
your Waldorf Wave keyboard (can't get that noiz out). do you? :-)
* Use your favorite Synth-Editor together with your favourite MIDI-Sequencer,
Combine the best of all MIDI programs.
* Don't want to wait for OMS.
This package is NOT for You, if you
* ask now "What is MIDI ?"
* laugh with pleasure about Microsofts error messages and their funny
translations. (is there a BestOf anywhere on the Net ?)
* won't hear a PC ventilator fan near your Waldorf Wave.
* your only MIDI application is a MIDI Jukebox player.
_____________________________________________________________________________
Highlights
up to 4 new MIDI In/Outputs
Multi client feature allows mixing and duplication of MIDI messages
full SysEx support
Very low memory requirements (about 5K fixed / 4k discardable Windows memory)
No hardware required (except your Windows-PC)
Port names can be edited
CAN EXTEND YOUR MIDI-DRIVER TO MULTI-CLIENT FASCILITY !
comes with hwmdcabl.exe - the realtime SysEx-thru icon.
program source is available
IT'S FREEWARE
_____________________________________________________________________________
Table of Contents
Overview
Installation
Updating from a Previous Version
How "Hubi's LoopBack works"
How "Hubi's MidiCable works"
Simple Example Setup
Making a MIDI port Multi Client able
Hints and Warnings : Midi-Thru, Cubase, CTL3D.DLL
History
Future Enhancements - What YOU can do
About the Author
_____________________________________________________________________________
Overview
The package contains two programs:
+ A MIDI driver, "Hubi's LoopBack Device", which must be installed via control
panel. The driver offers virtual MIDI Ports (up to 4), which act as Input
and Output. All MIDI data sent to the outpt (i.e. from sequencer program)
is delivered to all programs at the input side (i.e. a MIDI monitor
program).
+ A MIDI-Thru application, "Hubi's MIDI Cable", which acts like a MIDI thru
application. It is useful for quick connections between LoopBack-Nodes and
Hardware Ports.
_____________________________________________________________________________
Installation
Unzip to an empty directory
pkunzip a:mdlpbk23 -d c:\tmp
Copy the files HWMDCABL.EXE and HWMDCB.DLL to another directory. If you use
Windows FileManager, use the Drag&Drop feature to install a ProgramManager
icon.
Start Windows, select "Control Panel" from the "Main" group, select Drivers,
select Add button, select "unlisted driver", OK, enter your directory
(eg. C:\TMP). Now you should see "Hubis Loopback V2.3", and press OK. Now the
configuration dialog comes up and you must select the number of ports to use.
2 should be a good starting point, but WARNING: Windows(3.1) cannot handle
more than 10 midiports (+Midimapper).
After Restart, the new MIDI In and Outputs will be available then. If you have
no CTL3DV2.DLL in your \windows or \windows\system directory (nearly impossible)
then you must install one manually.
Windows 95:
Start->Settings->ControlPanel->Hardware
Continue-> [No] ->Continue -> [ Audio/Video/Game Controller ] ->Continue
->Diskette -> [ enter the unzipped directory ] ...
In case of troubles, try copying the file CTL3DV2.DLL to your windows\system
directory.
______________________________________________________________________________
Updating from a previous version
The main difference to the previous versions 1.0 and 1.1 is, that midlpbk.dll
now can deal with multiple clients. Each port can be opened by up to 4 MIDI-In
clients and up to 10 MIDI-Out clients. This feature makes the old matrix
configuration now unnecessary, and allows a more powerful and flexible
configuration that is also easier to maintain.
Removed features are:
- IN- and OUT ports now have the same name
- Matrix-setup removed
- No more a Control Panel Applet
This means you have to
remove your ProgMan-Icons for "control midlpbk.dll",
remove from control.ini, Section [MMCPL] the line
Hubis LoopBack=c:\windows\system\midlpbk.dll
Please remove the old driver before installing the new one. This saves some
space in system.ini.
The new features are
+ Multi Client
+ Port Name Dialog
The setup dialog is now only available from SytemControl->Drivers->Configure.
Between the versions 2.0 to 2.3 is no functional difference, only peripheral
smoothing.
______________________________________________________________________________
How "Hubi's LoopBack" works:
There is a MIDI output port and a MIDI input port. All data sent to
the output will be available at the input port, that is the MIDI output
from one program is the input of another program.
Prog1 >--[ LB1 ]--> Prog2
You should think about a MIDI node, which can be opened as output
from several programs and input of others. Each of this programs is named
"a client". The output of all OUT-clients is mixed down and sent to all
IN-clients. Multi-Client means, that each node can have up to 4 IN-clients
and 10 OUT-clients.
Hubi's LoopBack can serve up to 4 nodes, but changing the number of active
ports (=nodes) requires to restart Windows.
______________________________________________________________________________
How "Hubi's MIDI cable" works
It's a simple MIDI-thru program with following features:
- All MIDI processing in realtime - no Windows/Message delays
- Full SysEx support
- unlimited SysEx Message size
- low resource requirements (I could start it 57 times!)
Usage:
- Start
- Search icon, then select MIDI-in port and MIDI-out port.
- .... play your attached MIDI keyboard
- Close
- the settings are remembered for the next start (in win.ini).
Usage for advanced users:
The pro's need more than one instance running (I tried 57!), so I
gave the program the option to pass the ports on the command line.
e.g. HWMDCABL.EXE IN=1 OUT=1
Create an own program manager icon for each needed MIDI-connection
and edit the appropriate command line. The numbers are the same as
in the icon menu.
If it should start at startup, copy the program manager icons into
the Autostart program group (hold down the <Ctrl> key while dragging
with the mouse).
Filter Option: The filter can be setted only from the command line. I have
choosen no default setting from ini-settings because of the very
confusing behaviour if not all MIDI messages go through by default.
The format is
hwmdcabl.exe FILT=Channs,ChanMsgs,SysMsgs
where Chans,ChanMsgs and SysMsgs are a hexadecimal number each.
Chans:
8000 : Channel 16
4000 : Channel 15
2000
....
0002 : Channel 2
0001 : Channel 1
i.e. to filter out channels 12,11 and 1, use 0800+0400+0001 = 0C01
FILT=C01,..... (leading zeros are optional)
ChanMsgs:
0100 : Note Off
0200 : Note Off
0400 : Poly Key Pressure (key aftertouch)
0800 : Control Change
1000 : Program Change
2000 : Channel Pressure (channel Aftertouch)
4000 : Pitch Bend
i.e. to filter out channels 12,11 and 1, PitchBend and Polyphone Aftertouch
FILT=C01,4400
SysMsgs:
0001 : System exclusive
0002 : Midi Time code (MTC)
0004 : Song Position Pointer
0008 : Song Select
0040 : Tune Request
0080 : ( End of SysEx - will be received as SysEx or MM_MIM_ERROR)
realtime messages:
0100 : Midi Clock
0400 : Start
0800 : Continue
1000 : Stop
4000 : Active Sense
8000 : System Reset
When you hold down the <Ctrl> key while clicking the checkbox, you can
send the clicked system message to the MIDI output (have you ever tried
what reset does ?).
i.e. to filter out channels 12,11 and 1, PitchBend and Polyphone Aftertouch,
Midi Clock, Active Sense and MTC
FILT=C01,4400,4102
All filtered is: FILT=FFFF,7F00,DDCF
Transformation options: (experimental state)
TRx=mask,trigger,value
with x=1..4, mask, trigger and value are Hex numbers
Example: Transform Midi Controller #5 to Start/Stop messages
mask=FFFF80 - only MSB of Data 2
trigger=B00540
value=FA (Start)
mask=FFFF80 - only MSB of Data 2
trigger=B00500
value=FC (Stop)
... TR1=FFFF80,B00540,FA TR2=FFFF80,B00500,FC
______________________________________________________________________________
Simple Example Setup:
The symbol >>>> means a running HWMDCABL.EXE instance.
[SB MIDI In]--->>>>---[LB1]---<Cubase>---[LB2]--->>>>--[SB MIDI out]
/ / \\_<SynthEditor>_// \
MidiJoy_/ / \<CakeWalk>____/ \<MidiMonitor>
virtual Keyboard_/ \<MidiMonitor>
Note what's possible with only 2 nodes activated, and now imagine how
complicated your setup could be with all 4 nodes activated...
But if Creative Labs makes their SB16 MIDI Driver with multi client support,
most would work without midlpbk.dll
_____________________________________________________________________________
MAKING A MIDI PORT MULTI-CLIENT-ABLE
(there is a better alternative at
ftp://ftp.winsite.com/win3/sounds/multimid.zip )
You can use a loopback-port together with HWMDCABL.EXE to make a Hardware
MIDI port (eg. SoundBlaster) able to handle with multiple clients.
There exist already several MIDI drivers which are able to deal with more
than one client. I know of following:
Twelve Tone Systems MPU401 driver (comes with Cakewalk)
Voyetra Super SAPI FM synth (comes with SB16)
KORG PC I/F V1.11 (for KORG X5/05RW/X5DR)
Jamie O'Conell's FMSynth driver for OPL2/3 (V2.x )
All Turtle Beach drivers
A test if your driver supports multi-client access is simple:
- start 2 instances of HWMDCABL.EXE
- try to open one port (in or output) simultaneous by both midicable-icons.
If this works without an error message box, the port supports multi-client
access. If an error message box comes with "the midi port is already in
use..", multi client access is not supported.
- IN and OUT - ports are independent of each other, so you must check both.
To make a single access port multi client able, you must combine a LoopBack
node with a MIDI thru application: HWMDCABL.EXE
I'll demonstrate how to make the SB-MIDI port Multi-Client:
If you install midlpbk.dll and configure it with 2 active ports, then you'll
have 4 available MIDI inputs:
1 [SB16 MIDI In]
2 [Voyetra Super SAPI FM Synth]
3 [LB1]
4 [LB2]
The MIDI outputs should look like:
1 [Microsoft MidiMapper]
2 [SB16 MIDI Out]
3 [Voyetra Super SAPI FM Synth]
4 [LB1]
5 [LB2]
We use LB2 for the extension. For easier maintenance of the resulting setup,
we rename LB2 to "Multi SB MIDI In" (This is done by double-clicking at the
port name in the configuration dialog in Windows-Sytem-Control, Drivers). Now
we must start hwmdcabl.exe. The most user friendly way would be to start it
automatic on Windows startup. The installation is easy:
- Open ProgramManager and FileManager so that both are visible (Why do most
users use them in full screen mode ? ).
- Select the hwmdcabl.exe directory in FileManager
- Open the AutoStart group in ProgramManager
- Move the mouse (only the cursor) to FileManager, click over "hwmdcabl.exe"
and hold the mouse button down and move this icon into ProgramManagers
Autostart group and release the mouse button. Installed.
- Now we must tell hwmdcabl.exe which ports it should use. Start hwmdcabl.exe
and open the system menu of the appearing icon. You'll see a large menu
with all MIDI-IN ports in the middle and all MIDI-OUT ports at the right
side. Look at the numbers before the ports and remember the wanted IN and
OUT port number. Now switch to ProgramManager and hilight the Hwmdcabl icon
in the Autostart group. Press Alt-Enter to edit its properties.
- Append " IN=x OUT=y" (without quotes but with leading blank) to the
CommandLine field. x and y must be replaced with the appropriate port
numbers from the menu.
- Edit the Description field to "Multi SB MIDI In" or whatever you want
- press OK
In the above example, this could look like this dialog snapshot:
Description [Multi SB MIDI In ] ( OK )
CommandLine [C:\WINUTILS\MIDI\HWMDCABL.EXE IN=1 OUT=5 ] (Cancel)
Directory [C:\WINUTILS\MIDI ] (Search)
Hotkey [<none> ] (Symbol)
The next step is to change the setup of your MIDI programs to use the new
"Multi SB MIDI In port", which can be opened by 4 programs simultaneous now.
The menu of the running HWMDCABL.EXE program should look like:
0 None | 0 None |
--------------------------------|---------------------------------|
1 X SB16 MIDI In | 1 Microsoft MidiMapper |
2 Voyetra Super SAPI FM Driver| 2 SB16 MIDI Out |
3 LB1 | 3 Voyetra Super SAPI FM Driver|
4 Multi SB MIDI In port | 4 LB1 |
| 5 X Multi SB MIDI In port |
an the icon title should be "SB 16 MIDI In to Multi SB MIDI In port".
To make an output Multi-Client, read this chapter again with words IN and OUT
swapped.
_____________________________________________________________________________
Integrating MIDIMAPPER in setup
Example: a Yamaha PSS790 + Cakewalk Homestudio
- PSS790 sends all MIDI IN unchanged to MIDI OUT (merged with Keys)
- Cakewalk Homestudio has no Input Channel Filter.
- If you want to sequence a song using the PSS790 Synth during record,
you'll get all MIDI data back at the MIDI-In and will record all
16 MIDI channels (echoed from PSS790 out) at the current track.
[PSS790]-[MPU]-->>>--[MidiMapper]--[LB1]--[Sequencer]--[MPU]--[PSS790]
* enable one virtual Node LB1
* Setup MidiMapper: Only channel 1 is enabled and sent to LB1, rest off.
* MidiCable with IN=MPU and OUT=MidiMapper
* Only LB1 as Input in Sequencer
Now the Sequencer receives only channel 1 ! And you can record track by track now.
_____________________________________________________________________________
HINTS & WARNINGS:
MIDI THRU
When using the MIDI-thru option in your Sequencer application, be sure
it doesn't record it's own output when it sends to a virtual MIDI port. The
system will slow down or hang if a Midi-message circles around.
! A SEQUENCER PROGRAM MUST NOT HAVE THE SAME MIDI-NODE AS INPUT AND OUTPUT !
If it has, then be sure that any Midi-thru option is disabled.
CUBASE
Using with Cubase for Windows, MusicStation and Cubasis:
Since Cubase allocates all MIDI-Inputs and Outputs by default, you must
download the MROS-MME setup-utitlity from
ftp://mcc.ac.uk/pub/cubase/updates/Windows/set_mme.exe (upl. Feb 95)
This utility comes from Steinberg, but I don't know if it's included in the
current releases of Cubase/Cubasis/MusicStation. It can de/activate, sort and
even rename (inside Cubase) the available MIDI ports. To avoid midi-thru
problems, enable only LB1 for input and only LB2 for output.
Cubase will hang on startup if it one Node is activated as In- and Output.
I have tested following Sequencers:
Cubasis Demo, MusicStation Demo 1.1, CubaseScore1.1 : Require all SET_MME !
Cubase 1.0 (the unstable, but not-copy protected version) requires
SET_MME+newest MROS.DLL and drivers, but the ports can only be seen as
numbers then.
I had no problems with:
Cakewalk 3.0 Demo, WinJammer 2.3, Passport Trax, MidiSoft Recording Session,
WinSysEx 3.0, TTS Virtual Piono, MidiKeyb, .......
I was able to synchronize demos of SoundForge 3.0 and Samplitude Studio with
Cubase,
I could record from Cakewalk to Cubase and vice versa.
CTL3D.DLL
midlpbk.dll uses ctl3dv2.dll for their dialogs if installed.
_____________________________________________________________________________
History:
V 0.x Jan 94 : 1st working version, but nearly unused due to Cubase problems.
V 1.0 Feb 95 : first upload (Steinberg released set_mme-utility)
V 1.1 Code segment made fixed.
MidiOutShortMsg can be reentered 4 times now (should be enough)
Device Names can be edited in system.ini
V 2.0 Jun 95 : Multi-Client version. Remove all beautiful features (no more
necessary). Source splitted in fixed- and discardable code.
Packaged with HWMDCABL.EXE
V 2.1 Aug 95 : Fix for SB16 with TB-Rio, IN- and OUT- names can be different
(required for TB-WavePatch - see wfpatch.wri )
V 2.2 Oct 95 : dynamic load of Ctl3dV2.dll, only if installed.
priv. V 2.2a Nov 95 : Filter dialog with Midi Cable
priv. V 2.2b Jan 96 : Workaround for AWE32 driver bug on close,
V 2.3 Apr 96 : Fixed a Win95 bug with 32bit Window-Callback
------------------------------------------------------------------------------
Future enhancements:
Configurable realtime transformations.
WHAT OTHER PROGRAMMERS CAN DO :
I think it should now be easy for musical programmers to enhance their system
with small MIDI utilities, like random note generators, midi message
translation applications, problem specific input dialogs
(i.e. Visual Basic Interface for AWE32 filter resonance).
Or a MicroPhone to MIDI converter ?
-------------
Note: In the documentation of version 1.1, I said that the MMSYSTEM design of
Microsoft would not allow full featured multi-client drivers. I was
wrong. It was indeed very simple to implement it. As a hobby programmer,
I can't afford MSDN Level 1 or 2, so I'm always behind in getting
information (I had to do some disassembling).
But I don't know why Microsoft has not impelemented this very useful
feature in their own drivers and their DDK SoundBlaster example.
BTW, I've bought a Microsoft Home Mouse. It contains some funny programs for
modifying the Windows-cursor. After installation of the 2 floppies, one
of the directories contains 457 cursor files with 326 bytes length each.
But if you install this onto a harddisk partition with more than 1 GB,
15 MB of your C: drive is occupied (a 32 kB cluster per file). What I want
to say is, only Microsoft is able to copy 15 MB uncompressed to a floppy.
______________________________________________________________________________
Undocemented features:
WIN.INI:
[Hubi's MIDI cable]
SysExSize=1024
Use3D=1
SYSTEM.INI:
[midlpbk.drv]
Use3D=1
______________________________________________________________________________
The following programs should be available at the same where place you got
this file. On the internet, look at
ftp://ftp.cs.ruu.nl/pub/MIDI/PROGRAMS/MSWINDOWS
or ftp://ftp.winsite.com/win3/sounds
MDUTLS10.ZIP :
MIDI_MON: "MIDI MONITOR" - show received MIDI messages, (with SysEx!)
( MIDICONN: "MIDI CABLE" - simple MIDI Thru application (with SysEx!)
SYX_OUT: an Iconized-Application for sending .SYX dumps to Synthesizers,
with File Manager Drag and Drop Interface.
==> The file hwmdcb.dll in mdutls10.zip is an older version of the one
included in mdlpbk20.zip. Please replace the old with the new one to
avoid problems.
Also MIDICONN.EXE is superseeded by HWMDCABL.EXE.
MDJSTK10.ZIP: MIDI-Joystick. Use a PC-Joystick as MIDI controller.
X,Y and 2 Buttons configurable.
(send email for Joystick2 version)
SIMSAM10.ZIP: Hubi's Simple Sampler. Load a .WAV file Into memory, play
it as MIDI intrument (w. pitch transpose and volume control)
MCICOM99.ZIP: Hubi's MCI Commander, Execute MCI commands by MIDI.
(HD-recording, CD-Audio, Video, ...)
______________________________________________________________________________
About the author:
Dipl. Ing. Hubert Winkler
Neunkirchner Str. 17
A - 2732 Willendorf
Austria
Email: winkler@cobra.gud.siemens.co.at (office)